// Escrito em 27/04/2017

// A comunicação com o pcf8574 é no máximo 10KHZ
// Endereço do pcf8574:  0x40 a 0x4E
// Endereço do pcf8574a: 0x70 a 0x7E

#include "pcf8574.h"

// -------------------------------------------------------------------------------------------------------------------
// Descrição: 	Escreve um valor na porta do pcf8574
//				Exemplo:
//					pcf8574_Write(0x40, 0x25);
// Parametros:	addr: Endereço do dispositivo: pcf8574 de 0x40 a 0x4E, e pcf8574a de 0x70 a 0x7E
//				value: Valor a ser escrito
// Retorna:		retorna
//					pdPASS: Se a leitura foi feita com sucesso e a variável está com o valor lido
//					errI2C_ERROR: Houve algum erro na comunicação I2C
//					errI2C_NO_RESPONSE: O dispositivo não responde
// -------------------------------------------------------------------------------------------------------------------
int pcf8574_Write(u8 addr, u8 value) {
	int ret = pcf8574_Send(addr, &value, 1);
	return ret;
}

// -------------------------------------------------------------------------------------------------------------------
// Descrição: 	Lê a porta do pcf8574
// 				ATENÇÃO: Antes de ler é preciso que o bit que corresponde ao pino de leitura deve estar em alta.
//				Exemplo: Se deseja ler todos os bits:
//					pcf8574_Write(0x40, 0xFF);
//					pcf8574_Read(0x40, &var);
// Parametros:	addr: Endereço do dispositivo: pcf8574 de 0x40 a 0x4E, e pcf8574a de 0x70 a 0x7E
//				value: Ponteiro da variável que vai receber o valor lido do pcf
// Retorna:		retorna
//					pdPASS: Se a leitura foi feita com sucesso e a variável está com o valor lido
//					errI2C_ERROR: Houve algum erro na comunicação I2C
//					errI2C_NO_RESPONSE: O dispositivo não responde
// -------------------------------------------------------------------------------------------------------------------
int pcf8574_Read(u8 addr, u8* value) {
	int ret = pcf8574_Receive(addr, value, 1);
	return ret;
}
